/**
 * 活动详情页面脚本
 */
document.addEventListener('DOMContentLoaded', function() {
    // 初始化页面
    initActivityDetail();
    initRegisterForm();
    initTabBar();
    
    // 检查URL参数，如果有register=true，则自动打开报名表单
    const urlParams = new URLSearchParams(window.location.search);
    if (urlParams.get('register') === 'true') {
        const registerBtn = document.getElementById('registerBtn');
        if (registerBtn && !registerBtn.disabled) {
            setTimeout(() => {
                registerBtn.click();
            }, 500); // 延迟500毫秒，确保页面加载完成
        }
    }
});

/**
 * 初始化活动详情页面
 */
function initActivityDetail() {
    // 获取URL参数中的活动ID
    const urlParams = new URLSearchParams(window.location.search);
    const activityId = urlParams.get('id') || '1'; // 默认为1
    
    // 加载活动详情数据
    loadActivityDetail(activityId);
    
    // 初始化收藏按钮
    const favoriteBtn = document.getElementById('favoriteBtn');
    favoriteBtn.addEventListener('click', function() {
        this.classList.toggle('active');
        if (this.classList.contains('active')) {
            this.classList.remove('bi-star');
            this.classList.add('bi-star-fill');
            showToast('已收藏此活动');
        } else {
            this.classList.remove('bi-star-fill');
            this.classList.add('bi-star');
            showToast('已取消收藏');
        }
    });
    
    // 初始化分享按钮
    const shareBtn = document.getElementById('shareBtn');
    shareBtn.addEventListener('click', function() {
        // 如果支持Web Share API
        if (navigator.share) {
            navigator.share({
                title: document.getElementById('activityTitle').textContent,
                text: '我发现了一个不错的活动，快来看看吧！',
                url: window.location.href
            })
            .then(() => showToast('分享成功'))
            .catch(() => showToast('分享取消'));
        } else {
            // 简单的复制链接功能
            const dummy = document.createElement('input');
            document.body.appendChild(dummy);
            dummy.value = window.location.href;
            dummy.select();
            document.execCommand('copy');
            document.body.removeChild(dummy);
            showToast('链接已复制到剪贴板');
        }
    });
    
    // 加载相关活动
    loadRelatedActivities(activityId);
}

/**
 * 加载活动详情数据
 * @param {string} activityId - 活动ID
 */
function loadActivityDetail(activityId) {
    // 在实际应用中，这里应该从服务器获取数据
    // 这里使用模拟数据
    const activityData = getActivityData(activityId);
    
    // 填充活动数据到页面
    document.getElementById('activityImage').src = activityData.image || '';
    document.getElementById('activityImage').alt = activityData.title;
    document.getElementById('activityStatus').textContent = getStatusText(activityData.status);
    document.getElementById('activityStatus').className = 'activity-status ' + activityData.status;
    
    document.getElementById('activityTitle').textContent = activityData.title;
    document.getElementById('activityTime').textContent = activityData.time;
    document.getElementById('activityLocation').textContent = activityData.location;
    document.getElementById('activityParticipants').textContent = `${activityData.participants}人已报名`;
    
    // 填充标签
    const tagsContainer = document.getElementById('activityTags');
    tagsContainer.innerHTML = '';
    activityData.tags.forEach(tag => {
        const tagElement = document.createElement('span');
        tagElement.className = 'tag';
        tagElement.textContent = tag;
        tagsContainer.appendChild(tagElement);
    });
    
    // 填充活动详情
    document.getElementById('activityDescription').innerHTML = activityData.description;
    
    // 填充讲师信息
    const speakerList = document.getElementById('speakerList');
    speakerList.innerHTML = '';
    activityData.speakers.forEach(speaker => {
        const speakerItem = createSpeakerElement(speaker);
        speakerList.appendChild(speakerItem);
    });
    
    // 填充活动安排
    const scheduleList = document.getElementById('scheduleList');
    scheduleList.innerHTML = '';
    activityData.schedule.forEach(item => {
        const scheduleItem = createScheduleElement(item);
        scheduleList.appendChild(scheduleItem);
    });
    
    // 填充参与须知
    document.getElementById('activityNotes').innerHTML = activityData.notes;
    
    // 设置报名按钮状态
    const registerBtn = document.getElementById('registerBtn');
    if (activityData.status === 'ended') {
        registerBtn.disabled = true;
        registerBtn.textContent = '活动已结束';
    } else if (activityData.status === 'ongoing') {
        registerBtn.textContent = '立即报名';
    } else {
        registerBtn.textContent = '预约报名';
    }
}

/**
 * 获取状态文本
 * @param {string} status - 状态代码
 * @returns {string} 状态文本
 */
function getStatusText(status) {
    const statusMap = {
        'upcoming': '即将开始',
        'ongoing': '进行中',
        'ended': '已结束'
    };
    return statusMap[status] || '未知状态';
}

/**
 * 创建讲师元素
 * @param {object} speaker - 讲师数据
 * @returns {HTMLElement} 讲师元素
 */
function createSpeakerElement(speaker) {
    const speakerItem = document.createElement('div');
    speakerItem.className = 'speaker-item';
    
    speakerItem.innerHTML = `
        <div class="speaker-avatar">
            <img src="${speaker.avatar || ''}" alt="${speaker.name}" data-category="avatar">
        </div>
        <div class="speaker-info">
            <h3 class="speaker-name">${speaker.name}</h3>
            <p class="speaker-title">${speaker.title}</p>
            <p class="speaker-bio">${speaker.bio}</p>
        </div>
    `;
    
    return speakerItem;
}

/**
 * 创建活动安排元素
 * @param {object} schedule - 活动安排数据
 * @returns {HTMLElement} 活动安排元素
 */
function createScheduleElement(schedule) {
    const scheduleItem = document.createElement('div');
    scheduleItem.className = 'schedule-item';
    
    scheduleItem.innerHTML = `
        <div class="schedule-time">${schedule.time}</div>
        <div class="schedule-content">
            <h3>${schedule.title}</h3>
            <p>${schedule.description}</p>
        </div>
    `;
    
    return scheduleItem;
}

/**
 * 加载相关活动
 * @param {string} currentActivityId - 当前活动ID
 */
function loadRelatedActivities(currentActivityId) {
    // 模拟获取相关活动数据
    const relatedActivities = getRelatedActivities(currentActivityId);
    
    // 填充相关活动
    const relatedContainer = document.getElementById('relatedActivities');
    relatedContainer.innerHTML = '';
    
    relatedActivities.forEach(activity => {
        const activityItem = document.createElement('div');
        activityItem.className = 'related-activity-item';
        
        activityItem.innerHTML = `
            <div class="related-activity-img">
                <img src="${activity.image || ''}" alt="${activity.title}" data-category="activity">
            </div>
            <div class="related-activity-info">
                <h3>${activity.title}</h3>
                <p>${activity.time}</p>
            </div>
        `;
        
        // 点击跳转到相关活动详情
        activityItem.addEventListener('click', function() {
            window.location.href = `activity-detail.html?id=${activity.id}`;
        });
        
        relatedContainer.appendChild(activityItem);
    });
}

/**
 * 初始化报名表单
 */
function initRegisterForm() {
    const registerBtn = document.getElementById('registerBtn');
    const registerModal = document.getElementById('registerModal');
    const closeModalBtn = document.getElementById('closeModalBtn');
    const registerForm = document.getElementById('registerForm');
    const fileInput = document.getElementById('userResume');
    const fileName = document.getElementById('fileName');
    
    // 打开报名弹窗
    registerBtn.addEventListener('click', function() {
        registerModal.classList.add('show');
        document.body.style.overflow = 'hidden'; // 防止背景滚动
    });
    
    // 关闭报名弹窗
    closeModalBtn.addEventListener('click', function() {
        registerModal.classList.remove('show');
        document.body.style.overflow = '';
    });
    
    // 点击弹窗背景关闭弹窗
    registerModal.addEventListener('click', function(e) {
        if (e.target === registerModal) {
            registerModal.classList.remove('show');
            document.body.style.overflow = '';
        }
    });
    
    // 文件上传处理
    fileInput.addEventListener('change', function() {
        if (this.files.length > 0) {
            fileName.textContent = this.files[0].name;
            fileName.classList.add('show');
        } else {
            fileName.classList.remove('show');
        }
    });
    
    // 表单提交处理
    registerForm.addEventListener('submit', function(e) {
        e.preventDefault();
        
        // 表单验证
        if (!validateForm(this)) {
            return;
        }
        
        // 获取表单数据
        const formData = new FormData(this);
        
        // 在真实环境中，这里应该发送数据到服务器
        // 这里仅做模拟
        console.log('提交的表单数据:', Object.fromEntries(formData));
        
        // 关闭弹窗
        registerModal.classList.remove('show');
        document.body.style.overflow = '';
        
        // 重置表单
        this.reset();
        fileName.classList.remove('show');
        
        // 显示成功提示
        showToast('报名成功，请关注报名确认邮件');
    });
}

/**
 * 表单验证
 * @param {HTMLFormElement} form - 表单元素
 * @returns {boolean} 是否验证通过
 */
function validateForm(form) {
    // 验证姓名
    const userName = form.userName.value.trim();
    if (!userName) {
        showToast('请输入您的真实姓名');
        return false;
    }
    
    // 验证手机号
    const userPhone = form.userPhone.value.trim();
    if (!userPhone || !/^1[3-9]\d{9}$/.test(userPhone)) {
        showToast('请输入正确的手机号码');
        return false;
    }
    
    // 验证邮箱
    const userEmail = form.userEmail.value.trim();
    if (!userEmail || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(userEmail)) {
        showToast('请输入正确的电子邮箱');
        return false;
    }
    
    // 验证学校/单位
    const userSchool = form.userSchool.value.trim();
    if (!userSchool) {
        showToast('请输入所在学校或单位');
        return false;
    }
    
    // 验证身份证号
    const idCard = form.idCard.value.trim();
    if (!idCard || !(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(idCard))) {
        showToast('请输入正确的身份证号码');
        return false;
    }
    
    // 验证协议勾选
    if (!form.agreeTerms.checked) {
        showToast('请阅读并同意活动报名协议');
        return false;
    }
    
    return true;
}

/**
 * 显示提示消息
 * @param {string} message - 提示信息
 */
function showToast(message) {
    const toast = document.getElementById('toast');
    toast.textContent = message;
    toast.classList.add('show');
    
    setTimeout(() => {
        toast.classList.remove('show');
    }, 3000);
}

/**
 * 获取活动数据（模拟数据）
 * @param {string} activityId - 活动ID
 * @returns {object} 活动数据
 */
function getActivityData(activityId) {
    // 模拟数据，实际应该从服务器获取
    const activities = {
        '1': {
            id: '1',
            title: '互联网产品经理实战营',
            time: '2023-04-15 14:00-16:00',
            location: '线上',
            status: 'ongoing',
            participants: 132,
            tags: ['职业讲座', '互联网', '产品经理'],
            image: '../img/activity1.jpg',
            description: `
                <p>本次产品经理实战营将由资深互联网产品专家带领大家深入了解产品经理的工作内容、技能要求和职业发展路径。</p>
                <p>通过案例分析、实战演练和经验分享，帮助有志于从事产品经理职业的同学快速掌握产品思维和必备技能。</p>
                <p>活动中还将模拟产品设计与开发的全流程，让参与者在实践中学习，为未来的职业发展打下坚实基础。</p>
            `,
            speakers: [
                {
                    name: '张明',
                    title: '前百度资深产品经理，现某创业公司产品总监',
                    avatar: '',
                    bio: '8年互联网产品经验，曾主导多款用户过千万的APP产品设计与运营，对用户体验和产品运营有独到见解。'
                },
                {
                    name: '李晓红',
                    title: '阿里巴巴UED设计师',
                    avatar: '',
                    bio: '专注于移动端用户体验设计，参与过多个大型电商平台的交互设计，获得多项设计大奖。'
                }
            ],
            schedule: [
                {
                    time: '14:00-14:10',
                    title: '活动开场',
                    description: '主持人介绍活动背景和嘉宾'
                },
                {
                    time: '14:10-14:40',
                    title: '产品经理职业解析',
                    description: '张明老师分享产品经理的工作内容、技能要求和发展路径'
                },
                {
                    time: '14:40-15:10',
                    title: '产品设计与用户体验',
                    description: '李晓红老师讲解产品设计原则和用户体验优化方法'
                },
                {
                    time: '15:10-15:40',
                    title: '案例分析与实战演练',
                    description: '嘉宾带领学员分析经典产品案例，并进行简单的产品设计实践'
                },
                {
                    time: '15:40-16:00',
                    title: '问答环节',
                    description: '嘉宾解答学员问题，分享求职经验和建议'
                }
            ],
            notes: `
                <p>1. 请提前10分钟进入线上会议室，测试好设备和网络。</p>
                <p>2. 活动全程录制，参与者报名即视为同意被录像。</p>
                <p>3. 活动结束后，所有参与者将收到活动PPT和学习资料。</p>
                <p>4. 表现优秀的同学有机会获得导师一对一指导的机会。</p>
                <p>5. 如有特殊情况无法准时参加，请提前取消报名。</p>
            `
        },
        '2': {
            id: '2',
            title: '腾讯2023校园招聘宣讲会',
            time: '2023-04-20 10:00-12:00',
            location: '北京大学就业中心',
            status: 'upcoming',
            participants: 415,
            tags: ['企业开放日', '校园招聘', 'IT互联网'],
            image: '../img/activity2.jpg',
            description: `
                <p>腾讯2023校园招聘宣讲会将在北京大学就业中心举行，腾讯集团人力资源总监及各业务部门负责人将到场，为同学们详细介绍腾讯的企业文化、业务发展和校园招聘岗位需求。</p>
                <p>宣讲会上还将有腾讯优秀员工分享工作经验和面试技巧，并现场接受简历投递和咨询。这是近距离了解腾讯、把握就业机会的绝佳时机！</p>
            `,
            speakers: [
                {
                    name: '王志远',
                    title: '腾讯集团人力资源总监',
                    avatar: '',
                    bio: '负责腾讯集团校园招聘和人才培养体系建设，拥有15年人力资源管理经验。'
                },
                {
                    name: '陈思源',
                    title: '腾讯云技术负责人',
                    avatar: '',
                    bio: '负责腾讯云核心技术研发，ACM获奖者，在分布式系统和云计算领域有深厚造诣。'
                }
            ],
            schedule: [
                {
                    time: '10:00-10:10',
                    title: '开场致辞',
                    description: '北京大学就业指导中心负责人致辞'
                },
                {
                    time: '10:10-10:40',
                    title: '腾讯企业文化与业务介绍',
                    description: '腾讯集团人力资源总监王志远'
                },
                {
                    time: '10:40-11:10',
                    title: '技术岗位需求与发展路径',
                    description: '腾讯云技术负责人陈思源'
                },
                {
                    time: '11:10-11:30',
                    title: '优秀员工经验分享',
                    description: '优秀校招生代表分享成长经历'
                },
                {
                    time: '11:30-12:00',
                    title: '现场互动与简历投递',
                    description: 'Q&A环节及简历现场投递'
                }
            ],
            notes: `
                <p>1. 请携带学生证、个人简历参加活动。</p>
                <p>2. 宣讲会提供现场投递简历通道，有意向的同学请准备纸质简历。</p>
                <p>3. 参加宣讲会的同学将获得腾讯在线笔试直通车资格。</p>
                <p>4. 宣讲会现场将有精美礼品发放。</p>
                <p>5. 因场地限制，请提前到场，按秩序入场就座。</p>
            `
        },
        '3': {
            id: '3',
            title: '2023全国大学生编程大赛',
            time: '2023-03-25 09:00-18:00',
            location: '线上',
            status: 'ended',
            participants: 3240,
            tags: ['技能竞赛', '编程', '奖学金'],
            image: '../img/activity3.jpg',
            description: `
                <p>2023全国大学生编程大赛是面向全国高校学生的顶级编程比赛，旨在发掘优秀的编程人才，提升学生的算法设计和编程实现能力。</p>
                <p>本次大赛由教育部高教司指导，多家知名IT企业赞助，获奖者将有机会获得奖学金和知名企业的实习机会。</p>
            `,
            speakers: [
                {
                    name: '李教授',
                    title: '清华大学计算机系教授，大赛评委主席',
                    avatar: '',
                    bio: '计算机算法领域专家，曾担任多届ACM竞赛评委，指导学生多次获得国际大赛奖项。'
                }
            ],
            schedule: [
                {
                    time: '09:00-09:30',
                    title: '开幕式',
                    description: '大赛规则说明与开场致辞'
                },
                {
                    time: '09:30-12:30',
                    title: '初赛阶段',
                    description: '参赛选手在线完成初赛题目'
                },
                {
                    time: '12:30-13:30',
                    title: '午休时间',
                    description: '选手休息，评委初步评审'
                },
                {
                    time: '13:30-16:30',
                    title: '决赛阶段',
                    description: '晋级选手参加决赛'
                },
                {
                    time: '16:30-18:00',
                    title: '颁奖典礼',
                    description: '公布获奖名单，颁发奖项'
                }
            ],
            notes: `
                <p>1. 参赛选手需提前准备好电脑和网络环境。</p>
                <p>2. 比赛采用在线监考系统，请确保摄像头和麦克风正常工作。</p>
                <p>3. 禁止使用未经允许的外部资源，一经发现将取消比赛资格。</p>
                <p>4. 获奖选手需在一周内提交个人资料，用于奖项发放。</p>
            `
        }
    };
    
    // 填充其他活动数据
    for (let i = 4; i <= 8; i++) {
        if (!activities[i]) {
            // 复制第一个活动的数据结构，但修改一些内容
            const baseActivity = JSON.parse(JSON.stringify(activities['1']));
            activities[i] = {
                ...baseActivity,
                id: String(i),
                title: `活动${i}标题`,
                image: `../img/activity${i}.jpg`,
                participants: Math.floor(Math.random() * 300) + 100
            };
        }
    }
    
    return activities[activityId] || activities['1'];
}

/**
 * 获取相关活动（模拟数据）
 * @param {string} currentActivityId - 当前活动ID
 * @returns {Array} 相关活动数组
 */
function getRelatedActivities(currentActivityId) {
    // 模拟数据，实际应该从服务器获取
    return [
        {
            id: '3',
            title: '2023全国大学生编程大赛',
            time: '2023-03-25 09:00-18:00',
            image: '../img/activity3.jpg'
        },
        {
            id: '4',
            title: '金融行业求职经验分享会',
            time: '2023-04-18 19:00-21:00',
            image: '../img/activity4.jpg'
        },
        {
            id: '5',
            title: '阿里巴巴技术开放日',
            time: '2023-04-25 14:00-17:00',
            image: '../img/activity5.jpg'
        }
    ].filter(activity => activity.id !== currentActivityId);
}

/**
 * 初始化底部导航栏
 */
function initTabBar() {
    const tabItems = document.querySelectorAll('.tab-item');
    
    tabItems.forEach(item => {
        item.addEventListener('click', function() {
            const page = this.getAttribute('data-page');
            
            // 如果点击的不是当前页，则跳转
            if (!this.classList.contains('active')) {
                switch (page) {
                    case 'index':
                        window.location.href = '../index.html';
                        break;
                    case 'discovery':
                        window.location.href = 'discover.html';
                        break;
                    case 'agents':
                        window.location.href = 'activities.html';
                        break;
                    case 'profile':
                        window.location.href = 'profile.html';
                        break;
                }
            }
        });
    });
}